package com.deyuanyun.pic.pig.app.mapper;

import com.deyuanyun.pic.pig.app.domain.PigResults;
import com.deyuanyun.pic.pig.app.domain.PigTaskPoint;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface PigMapper {
    /**
     * 登录接口mapper
     *
     */
    List<HashMap<String,Object>> login(@Param("Account") String Account);




    /**
     * 查询用户的真实姓名
     * @param userId
     * @return
     */
    Map<String,Object> selectRealName(String userId);



    /**
     * 通过公司id查找公司相关信息
     * @param companyId
     * @return
     */
    Map<String,Object> selectCompanyName(String companyId);


    //外部人员借用
    //HashMap<String,Object> logins(@Param("Account") String Account);

    /**
     * 写登录日志接口
     */
    int insertLog(@Param("Id") String Id,@Param("userId") String userId,@Param("state") Integer state,
                  @Param("accessType") Integer accessType);
    /**
     * 判断用户是否是有效用户
     * @param UserID
     * @return
     */
    HashMap<String,Object> findUserId(@Param("UserID") String UserID);
    /**
     * 选择任务接口
     * @return
     */
    Page<HashMap<String, Object>>  findTask();

    /**
     * 获取任务信息
     * @param taskId
     * @return
     */
    HashMap<String, Object> getTaskInfo(@Param("taskId") String taskId);

    /**
     * 搜索任务接口
     * @param pipeName
     * @return
     */
    Page<HashMap<String, Object>>  findTaskByName(@Param("pipeName") String pipeName);
    /**
     * 选择跟踪点接口(发球点)
     * @param taskId
     * @return
     */
    HashMap<String, Object> findSend(@Param("taskId") String taskId);
    /**
     * 选择跟踪点接口(收球点)
     * @param taskId
     * @return
     */
    HashMap<String, Object> findBack(@Param("taskId") String taskId);
    /**
     * 选择跟踪点接口(跟踪点)
     * @return
     */
    List<HashMap<String, Object>> findMark(@Param("taskId") String taskId,@Param("type") Integer type);
    /**
     * 选择清管类型接口
     * @return
     */
    List<HashMap<String, Object>> getTaskTypes(@Param("type") String type);

    /**
     * 获得检测器接口
     * @return
     */
    List<HashMap<String, Object>> getdetector();
    /**
     * 根据taskId查询相应的管道ID和检测管段ID
     * @param taskId
     * @return
     */
    HashMap<String, Object> selectId(@Param("taskId") String taskId);

    /**
     * 查询pic-pig-result是否有结果
     * @param result
     * @return
     */
    int selectCount(PigResults result);

    /**
     * 提交发球点信息更新清管类型
     */
    int updateCleanType(PigResults result);

    /**
     * 提交发球点信息
     */
    int insertSendInfo(PigResults result);

    /**
     * 提交发球点信息
     */
    int updateSendInfo(PigResults result);

    /**
     * 提交收球点信息
     */

    int updateBackInfo(PigResults result);




    /**
     *  发球、收球、通过(发球)
     */
    int updateSend(@Param("taskId") String taskId,@Param("passTime") Date passTime);
    /**
     *  发球、收球、通过(收球)
     */
    int updateBack(@Param("taskId") String taskId,@Param("passTime") Date passTime,
                   @Param("arriveTime") Date arriveTime,@Param("avgSpeed") BigDecimal avgSpeed);


    /**
     * 提交标记点信息
     */

    int updateMarker(PigTaskPoint point);

    /**
     * 人到达跟踪点
     *
     */
    int arriveMark(PigTaskPoint point);

    /**
     * 查询发球点图片ID
     */
    List<HashMap<String, Object>> selectSpicture(@Param("taskId") String taskId);

    /**
     * 查询收球点图片ID
     */
    List<HashMap<String, Object>> selectBpicture(@Param("taskId") String taskId);

    /**
     * 查询标记点图片ID
     */
    List<HashMap<String, Object>> selectMpicture(@Param("markId") String markId);

    /**
     * 更改状态
     * @param Staus
     * @param taskId
     * @return
     */
    int updateStaus(@Param("staus") BigDecimal staus,@Param("time") Date time,@Param("taskId") String taskId);

    /**
     * 算出上个mark点的最大时间和距离
     * @param id
     * @param taskId
     * @return
     */
    HashMap<String,Object> selectSpeed(@Param("taskId") String taskId);

    /**
     * 判断是否是第一个跟踪点（如果不为NULL，则不是，反之）
     * @return
     */
    HashMap<String,Object> MaxSpeed(@Param("taskId") String taskId);

    /**
     * 查询GIS地图相关数据
     * @return
     */
    HashMap<String,Object> selectGis();

    /**
     * 查询上一次已完成任务的计划清管时间
     * @return
     */
    HashMap<String,Object> selectTime();

    /**
     * 查询此收发球筒是否逆流
     * @param taskId
     * @return
     */
    HashMap<String,Object> selectOrderBytaskId(String taskId);

    /**
     * 查询正常情况下跳过了那些跟球点
     * @author Jerry
     * @date 2016年4月14日 下午8:34:43
     */
    List<HashMap<String, Object>> selectOtherMarkByMile(@Param("taskId")String taskId,@Param("mile") BigDecimal mile);

    /**
     * 查询扭转情况下跳过了那些跟球点
     * @author Jerry
     * @date 2016年4月14日 下午8:33:35
     */
    List<HashMap<String, Object>> selectNiOtherMarkByMile(@Param("taskId")String taskId,@Param("mile") BigDecimal mile);

    /**
     * 查询当前跟踪点平均速度是否为空
     *
     * @author Jerry
     * @date 2016年4月18日 下午1:38:56
     */
    HashMap<String,Object> selectAvgSpeed(String id);
}
